package com.zijidelu.luframework.api.converter;

import com.zijidelu.luframework.api.model.Response;
import com.zijidelu.luframework.base.model.DataModel;

import java.util.List;

/**
 * DTO Response 转换器接口
 *
 * @author ZIJIDELU
 * @datetime 2025/10/29 22:10
 */
public interface DataResponseConverter<D extends DataModel, R extends Response> {

    /**
     * 将 DTO 转换为响应对象。
     *
     * @param dto DTO 实例
     * @return Response 实例
     */
    R dtoToResponse(D dto);

    /**
     * 将响应对象转换为 DTO。
     *
     * @param response 响应对象
     * @return DTO 实例
     */
    D responseToDto(R response);

    /**
     * 批量转换 DTO → Response。
     *
     * @param dtos DTO 列表
     * @return Response 列表
     */
    List<R> dtoToResponseList(List<D> dtos);

    /**
     * 批量转换 Response → DTO。
     *
     * @param responses 响应对象列表
     * @return DTO 列表
     */
    List<D> responseToDtoList(List<R> responses);
}
